/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package master.client;

import info.client.InfoClient;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 *
 * @author mark
 */
public class Add_Query extends JFrame implements ActionListener{
    //Declaratie van GUI-elementen en andere variabelen.
    private JTextField query_name = new JTextField(10);
    private JTextField query_text = new JTextField(50);
    
    private JLabel label_query_name = new JLabel("Rapportnaam");
    private JLabel label_query_text = new JLabel("Rapport");
    private JButton submit = new JButton("Toevoegen");
    
    private JPanel panel = new JPanel();
    
    private Queries queries;
    
    private String[] query_names;
    private Boolean checkQueryname = true;
    private Boolean checkQuerytext = true;
    private Boolean checkQuery = true;
    private String validation;
    
    public Add_Query(String[] _rapportnamen) 
    {
        panel.setLayout(null);
        
        label_query_name.setBounds(10, 5, 100, 20);
        query_name.setBounds(110,5,200,20);
        label_query_text.setBounds(10, 35, 45, 20);
        query_text.setBounds(70,35,400,20);
        submit.setBounds(90,70,100,30);
        
        panel.add(label_query_name);
        panel.add(query_name);
        panel.add(label_query_text);
        panel.add(query_text);
        panel.add(submit);
        
        
        //Voeg de actionlistener toe aan de submit knop.
        submit.addActionListener(this);
        
        //Declareer loginpanel als contentpane
        setContentPane( panel );
        
        //Geef een aantal eigenschappen aan voor het scherm.
        setResizable(true);
        setVisible(true);
        setSize(500, 150);
        setTitle("Rapport toevoegen");
        
        //Sla de lijst met query_names die deze klasse meekrijgt op.
        query_names = _rapportnamen;
    }
    
    //Methode of te kijken of de query_name al voorkomt in het systeem
    public Boolean checkQueryname(Boolean checkEmail)
    {
        String _queryname = query_name.getText();
        //Kijk voor elke query_name in de lijst of die overeenkomt met de ingevulde query_name
        for(String r : query_names)
        {
            if(_queryname.equals(r))
            {
                checkQueryname = false;
            }
        }
        return checkQueryname;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        //Als de submit knop is ingedrukt.
        if(e.getSource() == submit)
        { 
            //Kijk of de ingevoerde query_name al in het systeem staat.
            checkQueryname = checkQueryname(checkQueryname);
            
            //Declareer de benodigde variabelen
            String _queryname = query_name.getText();
            String Query = query_text.getText();
            String _query = Query.replace("'", "/");
            String FromSplitter[] = Query.split("FROM");

            
            //Als 1 van de 2 of beide tekstvelden niet zijn ingevuld.
            if (_queryname.equals("") || _query.equals(""))
            {
                //Laat een popupscherm zien waarop staat dat niet beide velden zijn ingevuld.
                JOptionPane.showMessageDialog(null,"Vul beide velden in","Mislukt",
                        JOptionPane.WARNING_MESSAGE);
            }
            //Als de query_name al in het systeem bestaat.
            else if (checkQueryname == false)
            {
                //Laat een popupscherm zien waarop staat dat de query_name al bestaat in het systeem.
                JOptionPane.showMessageDialog(null,"Deze naam is al in gebruik","Mislukt",
                        JOptionPane.WARNING_MESSAGE);
                //Zet de variabele om te bepalen of de query_name al bestaat weer op true.
                checkQueryname = true;
            }
      
            else if(FromSplitter[0].equals(Query))
            {
                JOptionPane.showMessageDialog(null,"FROM moet met hoofdletters geschreven worden","Mislukt",JOptionPane.WARNING_MESSAGE);
            }
                    
            else
            {
                //Declareer de variabele testquery.
                String testquery = Query;

                //Stuur testquery over de docketconnection naar de Infoserver
                InfoClient.socketconnection.send(testquery);
                
                //Lees het resultaat van de socketconnection
                Object[][] rowresult = InfoClient.socketconnection.read();
                
                validation = rowresult[0][0].toString();

                            //Als de query niet valide is. 
                            if(validation.equals("invalid"))
                            {
                                JOptionPane.showMessageDialog(null,"De ingevoerde query is niet valide","Mislukt",JOptionPane.WARNING_MESSAGE);
                            }
                            else
                            {
                                String query = "INSERT INTO rapporten (rapportnaam, rapport) values ('" + _queryname + "', '" + _query + "')";

                                InfoClient.socketconnection.send(query);

                                JOptionPane.showMessageDialog(null,"Het rapport is goed gekeurd","Geslaagd",JOptionPane.INFORMATION_MESSAGE);

                                this.setVisible(false);
                                
                
                            }
        } 

    }
    }
}
    

